﻿//////////////////////////////////////////////////////////////////////////////
//
//  Copyright © 1998-2024 Glodon Company Limited.  All rights reserved.
//
//  Use of this software is subject to the terms of the Glodon license
//  agreement provided at the time of installation or download, or which
//  otherwise accompanies this software in either electronic or hard copy form.  
//
//////////////////////////////////////////////////////////////////////////////


#pragma once
#include "GcmpUiInterface.h"
#include "IWidget.h"
#include <vector>

namespace gcmp
{
    class UniIdentity;
    class IDocument;
    class IDock;

    /// \brief 提供拾取过滤控件初始化所需上下文
    class GCMP_UI_INTERFACE_EXPORT IPickFilterWidgetInitializer
    {
    public:
        /// \brief 返回可拾取过滤的类别，用于初始化对话框里的类别过滤列表。
        ///
        /// 初始所有类别都是被勾选上状态。
        ///
        /// \param pDocument 文档指针
        /// \return std::vector<UniIdentity> 返回可拾取过滤的类别
        virtual std::vector<UniIdentity> GetCategories(const IDocument* pDocument) const = 0;

        /// \brief 析构函数
        ~IPickFilterWidgetInitializer();
    };

    /// \brief 拾取过滤可浮动停靠控件接口
    class GCMP_UI_INTERFACE_EXPORT IDockablePickFilterWidget : public IWidget
    {
    public:
        /// \brief 获取所在浮动面板。
        ///
        /// 获取浮动面板后，可以进行显示、隐藏、激活等操作。
        /// \see IDock
        virtual IDock * GetOwnerDock() = 0;

        /// \brief 析构函数
        virtual ~IDockablePickFilterWidget();
    };
}

